package com.mipo.client.javase.designerpattern.singleton.lazy.threadsafe.blocksynchronized;

/**
 * 使用同步代码块来实现
 * 这里的实现能够保证多线程并发下的线程安全性，但是这样的实现将全部的代码都被锁上了，同样的效率很低下。 
 * @author kitty
 */
public class BlockSynchronizedSingleton {
	private static BlockSynchronizedSingleton instance = null;
	
	private BlockSynchronizedSingleton(){}
	
	public static BlockSynchronizedSingleton getInstance() {
		try { 
			synchronized (BlockSynchronizedSingleton.class) {
				if(instance == null) {
					//创建实例之前可能会有一些准备性的耗时工作
					Thread.sleep(300);
					instance = new BlockSynchronizedSingleton();
				}
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		return instance;
	}
}




